Technical Q&A QA1255
Environment Variables


Q: system を使用して実行するコマンドは、環境変数をどこから取得するのでしょうか。

A: 環境変数は、常に親プロセスから継承します。Terminal から実行するプロセスはすべて Terminal の環境変数を継承します。

アプリケーションを「Finder」内でダブルクリックして実行すると、そのアプリケーションは Launch Services を使用して起動されます。Finder の親プロセスは WindowServer なので、Finder は WindowServer から環境変数を継承します。

system を使用してコマンドを実行すると、そのコマンドは、system コールを実行したアプリケーションの環境変数を継承します。親アプリケーションで setenv を呼び出すと、子プロセスはその環境変数を継承します。

WindowServer では、すべてのアプリケーションに継承させる追加のグローバル環境変数を「‾/.MacOSX/environment.plist」に設定できます。「‾/.MacOSX/environment.plist」ファイルに変更を加える方法の詳細については、QA1067 を参照してください。


[2003 年 10 月 29 日]